layui.config({
    base: ctx+'/plugin/mods/'
    , version: '1.0'
});
layui.use(['table','form','jquery','layarea'], function(){
    var table = layui.table;
    var layer = layui.layer;
    var form = layui.form;
    var $ = layui.jquery;
    var layarea = layui.layarea;

    // 渲染dataType
    table.render({
        elem: '#emp'
        ,url: ctx+'/eng/system/emp/listPage'
        ,page: true
        ,cols: [[
             {field: 'name', title: '姓名', width:'8%',align:'center'}
            ,{field: 'phone', title: '手机号码', width:'10%',align:'center'}
            ,{field: 'empCode', title: '用户账号', width:'13%',align:'center'}
            ,{field: 'depositName', title: '暂存区名称', width:'15%',align:'center'}
            // ,{field: 'remain', title: '权限额度', width:'10%',align:'center'}
            //,{field: 'carCode', title: '使用车辆', width:'10%',align:'center'}
            ,{field: 'createName', title: '创建人', width:'8%',align:'center'}
            ,{field: 'status', title: '状态', width:'5%',align:'center',templet:function(d){
                    if(d.statu == 0){
                        return "冻结";
                    }else{
                        return "激活";
                    }
                }}
            ,{field: 'ops', title: '操作', width:'45%',align:'center',toolbar: '#tool'}
        ]],
        toolbar : '#toobar',
        defaultToolbar :[],

    });


    table.on('tool(emp)', function(obj){
        var data = obj.data;
        var layEvent = obj.event;

        if(layEvent === 'up'){
            changeStatus(data);
        }else if(layEvent === 'down'){
            changeStatus(data);
        }else if(layEvent == "allocateDeposit"){
            allocateDeposit(data);
        }else if(layEvent == "allocateWasteType"){
            allocateWasteType(data);
        }else if(layEvent == "allocateArea"){
            allocateArea(data);
        }else if (layEvent == 'allocateRemain'){
            allocateRemain(data);
        }else if(layEvent == 'allocateCar'){
            allocateCar(data);
        }else if(layEvent == 'editInfo'){
            editInfo(data);
        }
    });

    // 基本信息修改
    function editInfo(data){
        form.val('eidtForm',{
            name : data.name,
            phone : data.phone,
            empCode : data.empCode,
            id : data.id
        });
        // 弹出层
        layer.open({
            type : 1,
            content : $('#eidtLayer'),
            title : '修改用户信息',
            btn : ['确定'],
            yes : function(index){
                // 修改用户的信息
                $.ajax({
                    url : ctx+"/eng/system/emp/editEmp",
                    data : $('#eidtForm').serialize(),
                    type : 'post',
                    async : false,
                    success : function(res){
                        if(res.success){
                            layer.closeAll();
                            layer.msg(res.msg,{icon:1});
                            table.reload('emp');
                        }else{
                            layer.msg(res.msg,{icon:2});
                        }
                    }
                });

            }
        })
    }

    var carData = null;
    // 分配车辆
    function allocateCar(data){
        carData = data;
        // 首先看是否已经分配暂存点
        $.ajax({
            url: ctx + '/eng/system/emp/isAllocateCar',
            type : 'post',
            data :{
                id : data.id
            },
            async : false,
            success : function(res){
                if(!res.success){
                    layer.closeAll()
                    layer.msg(res.msg,{icon:2});
                    return false;
                }

                // 弹出车辆选择,实际上就是获取该暂存点所拥有的车辆信息

                // 初始化列表内容
                table.render({
                    elem: '#carTable',
                    height :350,
                    url: ctx+'/eng/system/emp/getAllCanUseCar?id='+carData.id
                    ,page: true
                    ,cols: [[
                         {field: 'id', title: '选择', width:'10%',align:'center',type : 'radio'}
                        ,{field: 'carCode', title: '车牌号', width:'30%',align:'center'}
                        ,{field: 'param', title: '规格型号', width:'25%',align:'center'}
                        ,{field: 'remark', title: '备注信息', width:'35%',align:'center'}
                    ]],
                    defaultToolbar :[]
                });

                layer.open({
                    title : '分配车辆(不选择表示解绑车辆)',
                    content : $('#carAllocate'),
                    type : 1,
                    btn :['分配车辆'],
                    area : ['450px','500px'],
                    yes :function(res){
                        //获取选择的车辆信息.
                        var allCar = table.checkStatus('carTable');
                        // 提交的数据
                        var submitData = null;
                        if(allCar.data.length == 0){
                            layer.msg('您现在在解绑车辆')
                            var submitData = {
                                id : carData.id
                            };
                        }else{
                            submitData =  {
                                                id : carData.id,
                                                carId : allCar.data[0].id
                                          };
                        }

                        // 提交数据
                        $.ajax({
                            url : ctx+"/eng/system/emp/allocateCar",
                            data : submitData,
                            type : 'post',
                            async : false,
                            success : function(res){
                                if(res.success){
                                    layer.closeAll()
                                    layer.msg(res.msg,{icon:1});
                                    table.reload('emp')
                                }else{
                                    layer.msg(res.msg,{icon:2});
                                }
                            }
                        });
                    }
                })

            }
        });
    }


    // 授权额度
    function allocateRemain(data){
        layer.prompt({
            title : '请填写额度'
        },function(value, index, elem){
            $.ajax({
                url : ctx+"/eng/system/emp/allocateRemain",
                data :{
                    openId : data.openId,
                    amount : value
                },
                type : 'post',
                async : false,
                success : function(res){
                    if(res.success){
                        layer.close(index);
                        layer.msg(res.msg,{icon:1});
                        table.reload('emp');
                    }else{
                        layer.msg(res.msg,{icon:2});
                    }
                }
            });

        });
    }

    // 分配暂存区
    function allocateDeposit(data){
        $.ajax({
            url : ctx+"/eng/deposit/selectAll?",
            type : 'get',
            async:false,
            success : function(res){
                var str = "<div><input type='radio' name='deposit' value>无</div>";
                $.each(res.data,function(index,val){
                   str += "<div><input type='radio' name='deposit' userId='"+val.id+"'  value='"+val.id+"' title='"+val.name+"'></div>"
                });

                $('#allocateDepositLayer form .layui-input-inline').html(str);

                $.each($('#allocateDepositLayer input'),function(index,val){
                    if(data.depositId == $(val).val()){
                       $(this)[0].checked = true;
                    }
                });

                form.render();
                layer.open({
                    type : 1,
                    content : $('#allocateDepositLayer'),
                    title : '暂存区选择',
                    btn : ['确定'],
                    yes : function(index){
                        $.ajax({
                            url : ctx+"/eng/system/emp/allocateDeposit",
                            data : {
                                id : data.id,
                                depositId : $('#allocateDepositLayer input:checked').val()
                            },
                            success : function(res){
                                if(res.success){
                                    layer.closeAll();
                                    layer.msg(res.msg,{icon:1});
                                    table.reload('emp')
                                }else{
                                    layer.msg(res.msg,{icon:2});
                                }
                            }
                        });
                    }
                })
            }
        })
    }

    var userId = null;

    // 分配废品权限
    function allocateWasteType(data){
        userId = data.id;
        table.render({
            elem: '#wasteTable',
            url : ctx+'/api/WasteType/tree/getMainTypeInfo' // 查询出所有的主分类来
            ,cols: [[
                {field: 'id', title: 'ID',type : 'checkbox'}
                ,{field: 'name', title: '废品类别', width:'90%'}
            ]],
            parseData: function(res){ //res 即为原始返回的数据
                // 在这里查询用户已经选中的类型
                var returnData = res.data;
                $.ajax({
                    url : ctx+"/eng/system/emp/selectEmpAllCheckedWasteType", // 查询用户已经分配的类型来
                    data :{
                        id : data.id
                    },
                    async : false,
                    success : function(response){
                        for (var i = 0 ;i<returnData.length;i++){
                            for(var  j=0;j<  response.data.length;j++){
                                if(returnData[i].id == response.data[j].wasteTypeId){
                                    returnData[i]["LAY_CHECKED"] = true;
                                }
                            }
                        }
                    }
                });

                return {
                    "code": '0', //解析接口状态
                    "msg": '', //解析提示文本
                    "count": res.data.length, //解析数据长度
                    "data": returnData //解析数据列表
                };
        }
        });

        layer.open({
            title : '分配废品类型',
            type : 1,
            content : $('#allocateWasteType'),
            btn :['确定'],
            yes : function(){
                // 这里整理提交的数据
                var checkStatus = table.checkStatus('wasteTable');
                // 创建数据
                var data = [];
                for (var i =0;i<checkStatus.data.length;i++){
                    data.push({
                        userId : userId,
                        wasteTypeId : checkStatus.data[i].id
                    })
                }

                // 上传数据
                $.ajax({
                    url : ctx+"/eng/system/emp/allocateWasteType?id="+userId,
                    async : false,
                    type: 'post',
                    contentType:'application/json;charset=utf-8',
                    data : JSON.stringify(data),
                    success : function(res){
                        if(res.success){
                            layer.closeAll()
                            layer.msg(res.msg,{icon:1})
                        }else{
                            layer.msg(res.msg,{icon:2})
                        }
                    }
                });
            }
        })
    }

    // 存储地区信息
    var area = null;

    // 分配片区
    function allocateArea(data){
        userId = data.id;
        layarea.render({
            elem: '#area-picker',
            change: function (res) {
                var data = $("select[name='county']").find('option');
                var map = {};
                $(data).each(function(index,val){
                    var key = $(val).attr('value');
                    map[key] = $(val).attr('info')
                })
                var areaName = res.county;
                var areaCode = map[areaName];
                // todo
                area = {
                    county :  areaName,
                    countyCode :  areaCode
                };
            }
        });

        // 加载用户已经选择的片区内容
        $.ajax({
            url : ctx + '/eng/system/emp/selectEmpAllArea',
            data :{
                id : userId
            },
            success : function(res){
                var str = '';
                $.each(res.data,function(index,area){
                    str += '<button class="layui-btn layui-btn-primary area" info="'+area.areaCode+'">'+area.areaName+'</button>';
                });
                $('#areaDiv').html(str);

            }
        });
        layer.open({
            type : 1,
            content : $('#allocateArea'),
            title : '选择片区',
            btn : ['确定'],
            area : ['800px','600px'],
            yes : function(){
                // 收集数据
                var allEle = $('#areaDiv').find('button');
                var postData = [];
                $.each(allEle,function(index,val){
                    postData.push({
                        userId : userId,
                        areaCode : $(val).attr('info'),
                        areaName : $(val).html()
                    });
                })

                // 发送数据
                $.ajax({
                    url : ctx+"/eng/system/emp/allocateArea?id="+userId,
                    async : false,
                    type: 'post',
                    contentType:'application/json;charset=utf-8',
                    data : JSON.stringify(postData),
                    success : function(res){
                        if(res.success){
                            layer.closeAll()
                            layer.msg(res.msg,{icon:1})
                        }else{
                            layer.msg(res.msg,{icon:2})
                        }
                    }
                });
            }
        })
    }

    // 添加片区内容
    $('#areaButton').click(function(){
        if(area){
            var str = '<button class="layui-btn layui-btn-primary area" info="'+area.countyCode+'">'+area.county+'</button>';
            $('#areaDiv').append(str);
        }

    });

    // 删除区县
    $('#areaDiv').on('click','.area',function(e){
        $(e.target).remove();
    });

    function changeStatus(data){
        var status = null;
        if(data.status == 1){
            status = 0
        }else{
            status = 1
        }
        $.ajax({
            url : ctx+"/eng/system/emp/modify?status="+status,
            data : {
                id:data.id
            },
            type : 'post',
            async:false,
            success : function(res){
                if(res.success){
                    layer.msg(res.msg,{icon:1})
                    table.reload('emp');
                }else{
                    layer.msg(res.msg,{icon:2})
                }
            }
        })
    }

    //toolbar
    table.on('toolbar(emp)', function(obj){
        var event = obj.event;
        if(event == 'add'){
            layer.open({
                type : 1,
                content : $('#addLayer')
            });
        }
    });

    form.on('submit(submit)',function(data){
        $.ajax({
            url : ctx+"/eng/system/emp/add",
            data : data.field,
            type : 'post',
            async : false,
            success : function(res){
                if(res.success){
                    table.reload('emp');
                    layer.closeAll();
                    layer.msg(res.msg,{icon:1});
                    $('#reset').click();
                }else{
                    layer.msg(res.msg,{icon:2})
                }
            }
        });
    })

});